1 #include "meson-subsample.h"
2
3 struct _MesonSubSample
4 {
5 MesonSample parent_instance;
6
7 gchar *msg;
8 };
9
10 G_DEFINE_TYPE (MesonSubSample, meson_sub_sample, MESON_TYPE_SAMPLE)
11
12 enum {
13 PROP_0,
14 PROP_MSG,
15 LAST_PROP
16 };
17
18 static GParamSpec *gParamSpecs [LAST_PROP];
19
20 /**
21 * meson_sub_sample_new:
22 * @msg: The message to set.
23 *
24 * Allocates a new #MesonSubSample.
25 *
26 * Returns: (transfer full): a #MesonSubSample.
27 */
28 MesonSubSample *
meson_sub_sample_new(const gchar * msg)29 meson_sub_sample_new (const gchar *msg)
30 {
31 g_return_val_if_fail (msg != NULL, NULL);
32
33 return g_object_new (MESON_TYPE_SUB_SAMPLE,
34 "message", msg,
35 NULL);
36 }
37
38 static void
meson_sub_sample_finalize(GObject * object)39 meson_sub_sample_finalize (GObject *object)
40 {
41 MesonSubSample *self = (MesonSubSample *)object;
42
43 g_clear_pointer (&self->msg, g_free);
44
45 G_OBJECT_CLASS (meson_sub_sample_parent_class)->finalize (object);
46 }
47
48 static void
meson_sub_sample_get_property(GObject * object,guint prop_id,GValue * value,GParamSpec * pspec)49 meson_sub_sample_get_property (GObject *object,
50 guint prop_id,
51 GValue *value,
52 GParamSpec *pspec)
53 {
54 MesonSubSample *self = MESON_SUB_SAMPLE (object);
55
56 switch (prop_id)
57 {
58 case PROP_MSG:
59 g_value_set_string (value, self->msg);
60 break;
61 default:
62 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
63 }
64 }
65
66 static void
meson_sub_sample_set_property(GObject * object,guint prop_id,const GValue * value,GParamSpec * pspec)67 meson_sub_sample_set_property (GObject *object,
68 guint prop_id,
69 const GValue *value,
70 GParamSpec *pspec)
71 {
72 MesonSubSample *self = MESON_SUB_SAMPLE (object);
73
74 switch (prop_id)
75 {
76 case PROP_MSG:
77 self->msg = g_value_dup_string (value);
78 break;
79 default:
80 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
81 }
82 }
83
84 static void
meson_sub_sample_class_init(MesonSubSampleClass * klass)85 meson_sub_sample_class_init (MesonSubSampleClass *klass)
86 {
87 GObjectClass *object_class = G_OBJECT_CLASS (klass);
88
89 object_class->finalize = meson_sub_sample_finalize;
90 object_class->get_property = meson_sub_sample_get_property;
91 object_class->set_property = meson_sub_sample_set_property;
92
93 gParamSpecs [PROP_MSG] =
94 g_param_spec_string ("message",
95 "Message",
96 "The message to print.",
97 NULL,
98 (G_PARAM_READWRITE |
99 G_PARAM_CONSTRUCT_ONLY |
100 G_PARAM_STATIC_STRINGS));
101
102 g_object_class_install_properties (object_class, LAST_PROP, gParamSpecs);
103 }
104
105 static void
meson_sub_sample_init(MesonSubSample * self)106 meson_sub_sample_init (MesonSubSample *self)
107 {
108 }
109
110 /**
111 * meson_sub_sample_print_message:
112 * @self: a #MesonSubSample.
113 *
114 * Prints the message.
115 *
116 * Returns: Nothing.
117 */
118 void
meson_sub_sample_print_message(MesonSubSample * self)119 meson_sub_sample_print_message (MesonSubSample *self)
120 {
121 g_return_if_fail (MESON_IS_SUB_SAMPLE (self));
122
123 g_print ("Message: %s\n", self->msg);
124 }
125